﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace ProjetS5
{
    public class DB_NonPlayableCharacter : DatabaseTable
    {
        public DB_NonPlayableCharacter()
        {
        }

        /// <summary>
        /// Character's base statistics at level 1 plus their multiplier.
        /// </summary>
        public System.Collections.Generic.Dictionary<ProjetS5.DB_Statistic, KeyValuePair<float, float>> BaseStatistics { get; set; }

        /// <summary>
        /// Character's race.
        /// </summary>
        public DB_CharacterRace Race { get; set; }

        /// <summary>
        /// Determines friendship with player.
        /// </summary>
        public DB_FriendshipLevel FriendshipLevel { get; set; }

        /// <summary>
        /// Character's abilities.
        /// </summary>
        public List<DB_Ability> Abilities { get; set; }

        /// <summary>
        /// Character's minimum and maximum level.
        /// </summary>
        public int[] LevelRange { get; set; }

        /// <summary>
        /// Character's Name
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// What the NPC can specifically drop with its percentage of being dropped.
        /// </summary>
        public Dictionary<ProjetS5.DB_Item, float> SpecificLootTable { get; set; }

        /// <summary>
        /// Character's sprites.
        /// </summary>
        public List<Texture2D> Sprites { get; set; }

        /// <summary>
        /// Experience given when killed.
        /// </summary>
        public int GivenExperience { get; set; }

        /// <summary>
        /// Character's bars.
        /// </summary>
        public List<DB_PointBar> PointBars { get; set; }

        /// <summary>
        /// Determines if the NPC's primary attack is to cast.
        /// </summary>
        public bool IsCaster { get; set; }
    }
}
